package org.fastsyncer.manager.splitter.impl;

import java.util.Queue;

import org.fastsyncer.common.entity.MappingTask;
import org.fastsyncer.manager.splitter.Splitter;

//声明一个final，使别人不能随便new对象
//它只被调用一次，实例存在之后就不再调用了
public final class SqlMysqlSplitter implements Splitter {

    // 实现单例模式的方法，通过方法来实现实例化
    // 声明一个私有的静态属性，使只被实例化一次
    private static volatile SqlMysqlSplitter instance = null;

    private SqlMysqlSplitter() {
    }

    // 声明一个公共的静态方法，外界通过调用这个方法来得到唯一的实例
    public static SqlMysqlSplitter getInstance() {
        if (null == instance) {
            synchronized (SqlMysqlSplitter.class) {
                if (null == instance) {
                    instance = new SqlMysqlSplitter();
                }
            }
        }
        return instance;
    }

    @Override
    public Queue<Integer[]> split(MappingTask mappingTask) {
        return MysqlSplitter.getInstance().split(mappingTask);
    }

}
